package main

import (
	"flag"
	"fmt"
	"gfr/pkg"
	"os"
	"path/filepath"
	"runtime"
	"strings"

	log "github.com/sirupsen/logrus"
	"gopkg.in/natefinch/lumberjack.v2"
)

func main() {
	exeDir, err := os.Executable()
	if err != nil {
		log.Fatal("无法获取可执行文件路径:", err)
	}
	logDir := filepath.Join(filepath.Dir(exeDir), "logs") // 创建logs子目录

	// 确保日志目录存在
	if err := os.MkdirAll(logDir, 0755); err != nil {
		log.Fatal("创建日志目录失败:", err)
	}

	// 配置日志轮转（自动切割/压缩）
	logFile := &lumberjack.Logger{
		Filename:   filepath.Join(logDir, "app.log"), // 完整路径
		MaxSize:    200,                              // 单个文件最大大小(MB)
		MaxBackups: 10,                               // 保留旧文件数量
		MaxAge:     60,                               // 保留天数
		Compress:   false,                            // 启用压缩
	}

	// 同时输出到文件和控制台（可选）
	log.SetOutput(logFile) // 仅输出到文件

	log.SetFormatter(&log.JSONFormatter{
		TimestampFormat: "2006-01-02 15:04:05.000000",
		CallerPrettyfier: func(f *runtime.Frame) (string, string) {
			filename := filepath.Base(f.File)
			funcname := strings.TrimPrefix(filepath.Ext(f.Function), ".")
			return funcname, filename + ":" + fmt.Sprintf("%04d", f.Line)
		},
	})
	log.SetLevel(log.InfoLevel)

	log.SetReportCaller(true)
	childFlag := flag.Bool("child", false, "Indicates child process")
	flag.Parse()
	pkg.NewAppServer([]string{":10001", ":10002"}).Start(*childFlag)
	select {}
}
